home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib09.dsk / TRUNCATE AND ROUND.bas < prev    next >
BASIC Source File  |  2023-02-26  |  2KB  |  35 lines

  1. 1  REM  ****************************
  2. 2  REM  *    TRUNC & ROUND         *
  3. 3  REM  *  BY HOWARD S. BALSAM     *
  4. 4  REM  *  COPYRIGHT (C) 1982      *
  5. 5  REM  *  BY MICRO-SPARC INC      *
  6. 6  REM  *  LINCOLN, MA. 01773      *
  7. 7  REM  ****************************
  8. 110  REM  A VERSION OF THE NUMBER-FORMATTING FROM THE
  9. 120  REM  DEMO IN APPLESOFT II REFERENCE MANUAL,
  10. 130  REM  PAGES 18 & 22
  11. 140  HOME : PRINT "    TRUNCATING & ROUNDING NUMBERS": PRINT 
  12. 150  HTAB 6: INPUT "TYPE ANY NUMBER: ";X
  13. 160  PRINT : PRINT "  AFTER CONVERSION TO REAL PRECISION,": PRINT "  HOW MANY DIGITS DO YOU WISH ": INPUT "  TO THE RIGHT OF THE DECIMAL? ";D
  14. 170  GOSUB 1000
  15. 180  VTAB 23: PRINT "  HIT 'SPC BAR' TO CONTINUE; ": PRINT "  HIT ANY OTHER TO QUIT: ";: GET Z$:Z =  ASC(Z$)
  16. 190  IF Z = 32 GOTO 140
  17. 200  HOME : VTAB 10: HTAB 10: INVERSE : PRINT "***** G'BYE, NUMBERS! *****": NORMAL : END 
  18. 1000 X$ =  STR$(X): REM  CONVERT INPUT TO STRING
  19. 1010  REM   FIND POSITION OF E, IF IT EXISTS:
  20. 1020  FOR I = 1 TO  LEN(X$)
  21. 1030  IF  MID$ (X$,I,1) < >"E"  THEN  NEXT I
  22. 1040  REM  I IS NOW AT EXPONENT PORTION (OR END).
  23. 1050  REM  FIND POSITION OF DECIMAL POINT, IF IT EXISTS:
  24. 1060  FOR J = 1 TO I -1
  25. 1070  IF  MID$ (X$,J,1) < >"."  THEN  NEXT J
  26. 1080  REM  J IS NOW AT DECIMAL PT. (OR END OF NO. PORTION).
  27. 1090  REM  DO D DIGITS EXIST TO RIGHT OF POINT?
  28. 1100  IF J +D < = I -1  THEN N = J +D: GOTO 1130: REM  YES. 
  29. 1110 N = I -1: REM  NO, SO PRINT ALL DIGITS.
  30. 1120  REM  TRUNCATING: PRINT NO. PORTION AND EXPONENT PORTION:
  31. 1130  PRINT : PRINT  SPC( 10)"TRUNCATED:  " LEFT$(X$,N) + MID$ (X$,I)
  32. 1140  REM ROUNDING: ROUND NO. PORTION, ANNEX EXPONENT PART, IF ANY:
  33. 1150 L =  VAL( LEFT$(X$,N +1)):P = 10 ^D:LL =  INT(L *P +.5)/P:L$ =  STR$(LL)
  34. 1160  PRINT : PRINT  SPC( 10)"ROUNDED:    "L$ + MID$ (X$,I)
  35. 1170  RETURN